package core

import (
	"bytes"
	"geekai/core/types"
	logger2 "geekai/logger"
	"github.com/BurntSushi/toml"
	"os"
)

var log = logger2.GetLogger()

func NewDefaultConfig() *types.AppConfig {
	return &types.AppConfig{
		Listen:    "0.0.0.0:5678",
		ProxyURL:  "",
		StaticDir: "./static",
		StaticUrl: "http://localhost/5678/static",
	}
}

// LoadConfig 加载配置文件
func LoadConfig(configFile string) (*types.AppConfig, error) {
	var config *types.AppConfig
	// 判断路径是否存在，如果不存在就返回错误
	_, err := os.Stat(configFile)
	if err != nil {
		log.Info("配置文件不存在，使用默认的配置创建配置文件：", configFile)
		// 创建默认配置对象
		config = NewDefaultConfig()
		config.Path = configFile
		// 保存配置
		err := SaveConfig(config)
		if err != nil {
			return nil, err
		}
		return config, nil
	}
	// 把配置文件内容解析到对象中
	_, err = toml.DecodeFile(configFile, &config)
	if err != nil {
		return nil, err
	}
	return config, err
}

// SaveConfig 把配置信息写入到配置文件中
func SaveConfig(config *types.AppConfig) error {
	buf := new(bytes.Buffer)
	encoder := toml.NewEncoder(buf)
	if err := encoder.Encode(&config); err != nil {
		return err
	}
	return os.WriteFile(config.Path, buf.Bytes(), 0644)
}
